package cn.com.dcsgo.domain.dto;

import cn.com.dcsgo.common.validation.InIfNotNull;
import cn.com.dcsgo.common.validation.NotBlankIfNotNull;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotNull;
import lombok.Data;

/**
 * 更新菜单 请求参数
 *
 * @author Dcsgo
 * @since 28/5/2025 上午 9:59
 */
@Data
@Schema(description = "更新菜单 请求参数")
public class SysMenuUpdateDTO {
    /**
     * 菜单ID
     */
    @NotNull(message = "菜单编号不能为空")
    @Schema(description = "菜单ID")
    private Long menuId;

    /**
     * 菜单名称
     */
    @NotBlankIfNotNull(message = "菜单名称不能为空白字符串")
    @Schema(description = "菜单名称")
    private String menuName;

    /**
     * 显示顺序
     */
    @Schema(description = "显示顺序")
    private Integer orderNum;

    /**
     * 路由地址
     */
    @NotBlankIfNotNull(message = "路由地址不能为空白字符串")
    @Schema(description = "路由地址")
    private String path;

    /**
     * 组件路径
     */
    @NotBlankIfNotNull(message = "组件路径不能为空白字符串")
    @Schema(description = "组件路径")
    private String component;

    /**
     * 菜单可见状态（0显示 1隐藏）
     */
    @InIfNotNull(message = "菜单可见状态只能为：0显示 1隐藏", value = {"0", "1"})
    @Schema(description = "菜单可见状态（0显示 1隐藏）")
    private Integer visible;

    /**
     * 菜单状态（0正常 1停用）
     */
    @InIfNotNull(message = "菜单状态只能为：0正常 1停用", value = {"0", "1"})
    @Schema(description = "菜单状态（0正常 1停用）")
    private Integer status;

    /**
     * 权限标识
     */
    @NotBlankIfNotNull(message = "权限标识不能为空白字符串")
    @Schema(description = "权限标识")
    private String perms;

    /**
     * 菜单图标
     */
    @NotBlankIfNotNull(message = "菜单图标不能为空白字符串")
    @Schema(description = "菜单图标")
    private String icon;
}
